<div>a</div>
<div>b</div>
<div>c</div>
<script type="module">
	{
		document.write(...[1, 2, 3]);
		
		document.write(`<br><br>`);
		
		function f(x, y, z) {
			document.write(`替代数组的apply方法 f.apply(null, args)：${x}——${y}——${z}<br><br>`);
		}
		var args = [0, 1, 2];
		f(...args);
		
		//  合并数组
		var arr1 = ['a', 'b', 'c'];
		var arr2 = ['c','d'];
		var arr3 = ['d', 'e'];
		
		document.write(`ES5的合并数组：${arr1.concat(arr2, arr3)}<br><br>`);
		document.write(`ES6的合并数组：${[...arr1, ...arr2, ...arr3]}<br><br>`);
		
		// 扩展运算符可以与解构赋值结合起来，用于生成数组
		const [first, ...rest] = [1, 2, 3, 4, 5];
		
		document.write(`单个参数：${first}<br><br>`);
		document.write(`剩余参数：${rest}<br><br>`);
		
		document.write(`扩展运算符还可以将字符串转为真正的数组：${[...'hello']}<br><br>`);
		
		// 实现了Iterator接口的对象
		//var nodeList = document.querySelectorAll('div');
		//var array = [...nodeList];
		//document.write(`实现了Iterator接口的对象：${nodeList}<br><br>`);
		
		// Map 结构
		let map = new Map([
			[1, 'one'],
			[2, 'two'],
			[3, 'three'],
		]);
		document.write(`Map 结构，返回键名：${[...map.keys()]}<br><br>`);
		
		// Set 结构
		let set = new Set([
			[1, 'one'],
			[2, 'two'],
			[3, 'three'],
		]);
		document.write(`Set 结构，返回键值对：${[...set.keys()]}<br><br>`);
		
		// Generator函数运行后，返回一个遍历器对象，因此也可以使用扩展运算符
		var go = function*(){
			yield 1;
			yield 2;
			yield 3;
		};
		document.write(`Generator：${[...go()]}<br><br>`);
	}
</script>